Перейти к основному содержимому

5.04. Экосистема .NET-приложений

Разработчику Архитектору

Экосистема .NET-приложений

При запуске Visual Studio пользователь сталкивается с широким спектром шаблонов проектов. Каждый шаблон соответствует определённой точке в этой многослойной экосистеме. Некоторые шаблоны представляют полноценные приложения, другие — компоненты, библиотеки или инфраструктурные узлы.

Категоризация компонентов экосистемы

Для систематизации всего многообразия доступных шаблонов и технологий введём следующие категории:

  • Прикладные фреймворки — решения для создания пользовательских интерфейсов и взаимодействия с человеком (WPF, WinForms, MAUI, Blazor, Avalonia).
  • Серверные и фоновые службы — приложения без графического интерфейса, работающие в фоне или на сервере (Worker Service, ASP.NET Core, WCF).
  • Тестовые и вспомогательные проекты — инфраструктура для обеспечения качества (MSTest, NUnit, Playwright).
  • Интеграционные и специализированные платформы — технологии для взаимодействия с внешними системами, обработки данных или работы в нишевых средах (U-SQL, Hive, Raspberry Pi).
  • Расширения и инструменты разработки — компоненты, расширяющие саму среду Visual Studio (VSIX, Makefile, CMake).
  • Экспериментальные и гибридные решения — новые или малоизвестные подходы, часто находящиеся на стыке нескольких технологий (Storm Application, .NET Aspire, Mac Catalyst).

Прикладные фреймворки

Windows Presentation Foundation (WPF)

WPF — это фреймворк для построения насыщенных графических интерфейсов настольных приложений под Windows. Он появился в 2006 году как часть .NET Framework 3.0 и стал ответом Microsoft на необходимость современного подхода к UI-разработке. WPF основан на технологии XAML (eXtensible Application Markup Language), которая позволяет декларативно описывать структуру интерфейса, отделённую от логики приложения.

Ключевая особенность WPF — использование векторной графики, что обеспечивает масштабируемость интерфейса без потери качества. Фреймворк предоставляет мощную систему привязки данных (data binding), шаблонов управления (control templates), стилей и триггеров, позволяя создавать гибкие и адаптивные интерфейсы. WPF тесно интегрирован с DirectX, что даёт возможность использовать аппаратное ускорение рендеринга.

Хотя WPF изначально был привязан к .NET Framework и Windows, начиная с .NET Core 3.0 (2019) он получил поддержку в кроссплатформенной версии .NET. Однако его применение остаётся ограниченным операционной системой Windows, поскольку он зависит от Win32 API и DirectX. Тем не менее, WPF продолжает активно использоваться в корпоративных приложениях, особенно там, где требуется сложная визуализация, печать или глубокая интеграция с Windows.

Windows Forms (WinForms)

Windows Forms — более ранний, но всё ещё актуальный фреймворк для создания десктопных приложений под Windows. Он появился вместе с первыми версиями .NET Framework в 2002 году и основан на обёртках над нативными элементами управления Windows (Win32 controls). WinForms использует императивный подход: интерфейс строится программно или через визуальный конструктор в Visual Studio, с минимальным использованием разметки.

Преимущества WinForms — простота освоения, высокая производительность для стандартных задач и огромная база существующих приложений. Многие внутренние корпоративные системы, финансовые терминалы и утилиты администрирования до сих пор работают на WinForms. Начиная с .NET Core 3.0, WinForms также был перенесён в современную платформу .NET, получив поддержку в .NET 5 и выше. Это позволило продлить жизненный цикл тысяч приложений без необходимости полного переписывания.

Несмотря на устаревший внешний вид по умолчанию, WinForms допускает кастомизацию через owner-drawn элементы и сторонние библиотеки. Его основное назначение — быстрая разработка функциональных, но не обязательно визуально сложных приложений под Windows.

.NET Multi-platform App UI (MAUI)

MAUI — это современный кроссплатформенный фреймворк для создания нативных мобильных и десктопных приложений из единого кода. Он является эволюцией Xamarin.Forms и официально выпущен в 2022 году как часть .NET 6. MAUI позволяет писать один UI-код на C# и XAML, который затем компилируется в нативные приложения для Windows, macOS, iOS и Android.

Архитектура MAUI основана на абстракции «общего подмножества» возможностей платформ. Для каждого элемента управления (кнопка, список, навигация) определяется унифицированный API, а во время выполнения используется соответствующая нативная реализация. Это обеспечивает не только единый код, но и соблюдение платформенных UX-стандартов: приложение на iOS выглядит как iOS-приложение, на Android — как Android-приложение.

MAUI включает встроенную поддержку темизации, адаптивных макетов, доступа к устройствам (камера, GPS, акселерометр), сетевых запросов и работы с файловой системой. Он интегрирован с моделью MVU (Model-View-Update) и классическим MVVM (Model-View-ViewModel), что упрощает разделение логики и представления. MAUI представляет собой стратегическое направление Microsoft в области кроссплатформенной разработки и рекомендуется для новых проектов, требующих развёртывания на нескольких устройствах.

WinUI

WinUI — это современный набор нативных элементов управления для Windows, построенный на основе Fluent Design System. В отличие от WPF и WinForms, WinUI не является самостоятельным фреймворком, а служит UI-слоем для других технологий, в первую очередь — для Windows App SDK (ранее известной как Project Reunion).

WinUI 3, выпущенная в 2021 году, предоставляет полностью независимую от операционной системы библиотеку контролов, распространяемую через NuGet. Это означает, что разработчик может использовать самые свежие элементы интерфейса даже на старых версиях Windows 10, без ожидания обновлений ОС. WinUI тесно интегрирована с XAML и поддерживает те же принципы привязки данных и компоновки, что и WPF, но с более современным дизайном и лучшей производительностью.

WinUI применяется в приложениях, ориентированных на экосистему Windows 10/11, особенно в тех, где важна интеграция с Microsoft Store, уведомлениями, панелью задач и другими системными функциями. Она считается будущим десктопной разработки под Windows и постепенно заменяет UWP (Universal Windows Platform).

Avalonia

Avalonia — это независимый, open-source фреймворк с открытым исходным кодом, вдохновлённый WPF, но созданный сообществом. Он использует XAML для описания интерфейса и предоставляет систему привязки данных, стилей и шаблонов, очень похожую на WPF. Главное отличие — Avalonia полностью кроссплатформенна: она работает на Windows, Linux, macOS, а также поддерживает WebAssembly и Android/iOS через экспериментальные бэкенды.

Avalonia не зависит от Win32 или DirectX. Вместо этого она использует Skia — кроссплатформенную графическую библиотеку, что обеспечивает единый рендеринг на всех платформах. Это делает Avalonia особенно привлекательной для разработчиков, желающих перенести существующие WPF-приложения в кроссплатформенную среду без перехода на MAUI.

Хотя Avalonia не является продуктом Microsoft, она активно развивается, имеет растущее сообщество и используется в реальных коммерческих проектах. Её архитектура позволяет достичь высокой степени совместимости с WPF-кодом, что снижает стоимость миграции.

Blazor Server

Blazor — это фреймворк для создания интерактивных веб-приложений с использованием C# вместо JavaScript. Blazor существует в двух основных режимах: Blazor Server и Blazor WebAssembly. Blazor Server выполняет логику приложения на сервере, а взаимодействие с браузером происходит через SignalR — технологию реального времени от Microsoft.

При запуске Blazor Server-приложения создаётся постоянное соединение между клиентом и сервером. Все действия пользователя (нажатия кнопок, ввод текста) передаются на сервер, где обрабатываются в C#, после чего обновлённый DOM отправляется обратно в браузер. Это позволяет использовать всю мощь .NET на сервере, избегая необходимости писать JavaScript.

Blazor Server идеально подходит для внутренних корпоративных веб-приложений, где задержки сети минимальны, а безопасность критична. Он интегрирован с ASP.NET Core, поддерживает аутентификацию, авторизацию, маршрутизацию и работу с компонентами. Однако он менее пригоден для публичных сайтов с высокой нагрузкой или нестабильным соединением, так как каждое соединение потребляет серверные ресурсы.

Blazor представляет собой важный шаг Microsoft по расширению экосистемы .NET на веб-платформу, позволяя разработчикам использовать единый язык и инструменты для клиентской и серверной логики.


Серверные и фоновые службы

Worker Service

Worker Service — это шаблон проекта в экосистеме .NET, предназначенный для создания долгоживущих фоновых процессов. Он появился в .NET Core 3.0 как часть усилий Microsoft по унификации моделей разработки сервисов. Worker Service не имеет пользовательского интерфейса и не обрабатывает HTTP-запросы напрямую. Вместо этого он выполняет циклические или событийные задачи: опрос очередей сообщений, обновление кэшей, отправку уведомлений, мониторинг ресурсов.

Архитектурно Worker Service основан на модели хостинга (hosting model), общей для всех современных .NET-приложений. Он использует IHostedService — интерфейс, определяющий методы StartAsync и StopAsync, которые вызываются при запуске и остановке приложения. Разработчик реализует логику выполнения внутри этих методов, часто с использованием BackgroundService — базового класса, упрощающего управление фоновыми потоками.

Worker Service интегрирован с системой зависимостей (dependency injection), конфигурацией через appsettings.json, логированием и другими стандартными механизмами .NET. Это позволяет легко развёртывать такие службы в контейнерах Docker, оркестрировать их через Kubernetes или запускать как Windows- или Linux-сервисы. Worker Service стал де-факто стандартом для фоновой обработки в микросервисных архитектурах.

Windows Communication Foundation (WCF)

WCF — это фреймворк для построения сервисно-ориентированных приложений (SOA), представленный в .NET Framework 3.0 в 2006 году. Его цель — унифицировать различные способы межпроцессного взаимодействия: веб-сервисы (SOAP), TCP, именованные каналы, MSMQ и другие транспорты. WCF позволяет определять контракты сервисов ([ServiceContract]), операций ([OperationContract]) и данных ([DataContract]), а затем гибко настраивать способ их публикации и потребления.

Ключевая особенность WCF — его модель «ABC»: Address (адрес конечной точки), Binding (протокол и параметры соединения), Contract (описание функциональности). Эта модель обеспечивает высокую степень настройки: один и тот же сервис может быть доступен одновременно по HTTP и TCP, с разной безопасностью и сериализацией.

Изначально WCF был доступен только в .NET Framework и работал исключительно под Windows. Однако в 2015 году Microsoft выпустила CoreWCF — open-source порт WCF для .NET Core и .NET 5+. Хотя CoreWCF пока не поддерживает все функции оригинала, он предоставляет достаточную функциональность для миграции корпоративных систем. WCF остаётся важным элементом экосистемы в тех случаях, где требуется совместимость с унаследованными SOAP-сервисами или сложная маршрутизация сообщений.

Узел приложений .NET Aspire

.NET Aspire — это новая инициатива Microsoft, направленная на упрощение разработки, тестирования и развёртывания облачно-ориентированных приложений. Представленная в 2023 году, она представляет собой набор инструментов, шаблонов и библиотек для создания надёжных, наблюдаемых и масштабируемых распределённых систем.

Центральный элемент .NET Aspire — узел приложений (App Host). Это специальный проект, который описывает всю топологию приложения: какие сервисы запускаются, как они связаны между собой, какие зависимости (базы данных, кэши, очереди) им необходимы. App Host управляет жизненным циклом всех компонентов во время разработки и автоматически генерирует конфигурацию для развёртывания в облаке.

Узел приложений .NET Aspire не является самостоятельным сервером или фреймворком. Он служит оркестратором, координирующим запуск других проектов (.NET Web API, Worker Services, внешние контейнеры). Это позволяет разработчику работать с многокомпонентной системой так, будто она единое целое, без необходимости вручную настраивать сети, порты и переменные окружения.

.NET Aspire включает встроенную поддержку метрик, трассировки и журналов через OpenTelemetry, а также готовые интеграции с популярными сервисами: Redis, PostgreSQL, RabbitMQ, Azure Service Bus. Это делает его мощным инструментом для современной облачной разработки, особенно в средах, где важна наблюдаемость и отказоустойчивость.

Библиотека службы публикации

Термин «библиотека службы публикации» в контексте Visual Studio обычно относится к шаблону проекта, связанному с публикацией содержимого — например, документов, отчётов или медиафайлов. В экосистеме .NET это чаще всего проявляется в интеграции с Microsoft ClickOnce или Windows Installer XML (WiX), но может также указывать на использование Publish Profiles в ASP.NET Core.

В современных версиях .NET публикация приложений осуществляется через команду dotnet publish, которая компилирует проект и собирает все необходимые зависимости в одну директорию. Для веб-приложений эта директория может быть развёрнута на IIS, Nginx, Azure App Service или в Docker-контейнер. Шаблон «библиотека службы публикации» в Visual Studio, скорее всего, представляет собой вспомогательный проект, содержащий настройки развёртывания, трансформации конфигурации или скрипты постобработки.

Хотя сама по себе эта библиотека не содержит исполняемой логики, она играет важную роль в CI/CD-конвейерах, обеспечивая воспроизводимость и контроль над процессом доставки ПО.


Тестовые и вспомогательные проекты

MSTest

MSTest — это встроенная платформа модульного тестирования от Microsoft, изначально появившаяся вместе с Visual Studio Team System в 2005 году. Она тесно интегрирована в среду разработки: шаблоны тестовых проектов доступны прямо в диалоге создания нового проекта, а выполнение тестов поддерживается через Test Explorer без необходимости установки дополнительных расширений.

Архитектура MSTest основана на атрибутах: методы, помеченные как [TestMethod], автоматически распознаются как тесты; классы с атрибутом [TestClass] группируют связанные проверки. MSTest предоставляет богатый набор утверждений (Assert.AreEqual, Assert.ThrowsException и др.), механизмы настройки окружения ([TestInitialize], [TestCleanup]) и параметризованные тесты через [DataRow].

Начиная с .NET Core, MSTest был переписан как MSTest V2 — полностью open-source, кроссплатформенный и распространяемый через NuGet. Это позволило использовать его не только в Windows, но и в Linux/macOS, а также в CI/CD-системах, таких как GitHub Actions или Azure Pipelines. MSTest остаётся предпочтительным выбором для команд, глубоко интегрированных в экосистему Microsoft, благодаря своей стабильности, документации и поддержке со стороны Visual Studio.

NUnit

NUnit — это независимая, кроссплатформенная платформа модульного тестирования с открытым исходным кодом, существующая с 2002 года. Она вдохновлена оригинальным JUnit для Java и следует тем же принципам xUnit-архитектуры. NUnit получил широкое распространение в сообществе .NET благодаря гибкости, выразительности и ранней поддержке .NET Core.

В NUnit тесты определяются с помощью атрибутов [Test], [TestFixture], [SetUp], [TearDown]. Особое внимание уделено параметризации: через [TestCase], [TestCaseSource] и [ValueSource] можно легко создавать наборы входных данных для одного и того же теста. NUnit также поддерживает категории тестов ([Category]), что позволяет запускать подмножества проверок (например, только «интеграционные» или «медленные»).

Хотя NUnit требует установки расширения для полной интеграции с Visual Studio, он отлично работает в Visual Studio Code и командной строке через dotnet test. Его популярность особенно высока среди разработчиков, ценящих контроль над процессом тестирования и стремящихся к максимальной переносимости кода между платформами.

MSTest Playwright

Этот термин объединяет два разных инструмента: MSTest как фреймворк для организации тестов и Playwright как библиотеку для автоматизации браузеров. Playwright — это современное решение от Microsoft для end-to-end (E2E) тестирования веб-приложений. Оно поддерживает Chromium, Firefox и WebKit, обеспечивая кроссбраузерную совместимость и высокую скорость выполнения.

Когда в Visual Studio предлагается шаблон «MSTest Playwright», речь идёт о проекте, в котором используются MSTest для структурирования тестовых сценариев, а Playwright — для взаимодействия с веб-страницами: навигации, ввода текста, кликов, проверки состояния элементов. Такой подход позволяет писать надёжные, читаемые и поддерживаемые E2E-тесты на C#.

Playwright отличается от устаревших решений (например, Selenium) использованием современных API браузеров, встроенной поддержкой ожиданий (auto-waiting), изоляцией контекстов и возможностью записи видео или трассировок выполнения. Интеграция с MSTest делает его удобным для команд, уже использующих эту платформу для модульных тестов, обеспечивая единый стиль и инфраструктуру для всех уровней проверок.

Библиотека динамической компоновки с экспортом

Этот шаблон в Visual Studio относится к созданию библиотек DLL, предназначенных для динамической загрузки во время выполнения другим приложением. Такие библиотеки часто используются в плагинных архитектурах, где основное приложение не знает заранее, какие модули будут установлены, но может загружать их по требованию через Assembly.LoadFrom или Reflection.

Фраза «с экспортом» указывает на то, что библиотека предоставляет публичные типы и методы, предназначенные для использования внешними программами. Это требует тщательного проектирования интерфейсов, версионирования и управления зависимостями. В экосистеме .NET такие библиотеки обычно распространяются как NuGet-пакеты или просто как файлы .dll.

Динамическая компоновка особенно полезна в системах с расширяемой функциональностью: графических редакторах, IDE, игровых движках, ETL-платформах. Она позволяет обновлять отдельные компоненты без пересборки всего приложения и поддерживать множество вариантов поведения через подключаемые модули.


Интеграционные и специализированные платформы

U-SQL

U-SQL — это язык запросов, разработанный Microsoft для платформы Azure Data Lake Analytics. Он сочетает в себе элементы SQL (для декларативной обработки структурированных данных) и C# (для императивной логики и расширяемости). Цель U-SQL — обеспечить эффективную обработку экза- и петабайтов неструктурированных и полуструктурированных данных в облачной среде.

Синтаксис U-SQL начинается с привычного SELECT ... FROM, но позволяет внедрять пользовательские функции на C#, определять сложные схемы парсинга файлов (например, логов в формате CSV или JSON) и использовать распределённые алгоритмы. Запросы компилируются в распределённый план выполнения, который запускается на кластере Azure Data Lake.

Хотя U-SQL был активно продвигаем в 2015–2018 годах, Microsoft постепенно сместила фокус в сторону Azure Synapse Analytics, где основным языком стал стандартный T-SQL с поддержкой Spark и Python. Тем не менее, U-SQL остаётся в списке шаблонов Visual Studio как часть унаследованной инфраструктуры для работы с большими данными, и некоторые корпоративные системы продолжают его использовать.

Hive

Apache Hive — это система хранения и анализа данных, изначально разработанная в рамках проекта Hadoop. Она предоставляет SQL-подобный язык запросов HiveQL, позволяющий выполнять аналитические операции над огромными наборами данных, хранящихся в распределённой файловой системе HDFS.

В контексте экосистемы .NET Hive обычно используется через HDInsight — облачный сервис Microsoft Azure для развёртывания кластеров Hadoop, Spark, Kafka и других big data-технологий. Visual Studio включает шаблоны для создания Hive-скриптов и отправки их на выполнение в HDInsight. Это позволяет разработчикам .NET интегрировать аналитические рабочие процессы в свои приложения, даже если основная логика написана на C#.

Hive особенно эффективен для задач, где важна масштабируемость и отказоустойчивость, а не низкая задержка. Он применяется в хранилищах данных, ETL-процессах и историческом анализе. Хотя сам Hive написан на Java, его использование через Azure делает его доступным для .NET-разработчиков как внешний сервис.

Raspberry Pi

Raspberry Pi — это серия недорогих одноплатных компьютеров, широко используемых в образовании, прототипировании и IoT-проектах. Экосистема .NET поддерживает Raspberry Pi начиная с .NET Core 3.0, а с выходом .NET 5 и выше эта поддержка стала официальной и стабильной.

Разработка для Raspberry Pi в .NET осуществляется через .NET IoT Libraries — набор библиотек для взаимодействия с GPIO, I2C, SPI, UART и другими аппаратными интерфейсами. Приложение может быть написано на C# в Visual Studio, скомпилировано под архитектуру ARM32/ARM64 и развёрнуто на устройстве через SSH или напрямую с SD-карты.

Такие проекты часто используют Worker Service в качестве основы, поскольку они выполняют фоновые задачи: сбор данных с датчиков, управление реле, передача информации в облако. Возможность использовать знакомый язык и инструменты делает .NET привлекательным выбором для разработчиков, переходящих из десктопной или веб-сферы в мир встраиваемых систем.

Mac Catalyst

Mac Catalyst — это технология от Apple, позволяющая запускать iPad-приложения на macOS без значительных изменений в коде. В контексте .NET она становится актуальной при использовании MAUI, так как MAUI поддерживает развёртывание приложений на iOS и macOS.

Когда разработчик создаёт MAUI-приложение и выбирает целевую платформу macOS, Visual Studio автоматически использует Mac Catalyst для упаковки приложения. Это означает, что UI-элементы, изначально предназначенные для сенсорного управления, адаптируются для работы с мышью и клавиатурой, а системные API вызываются через мост между .NET и Cocoa.

Mac Catalyst не является частью .NET напрямую — это прослойка от Apple, — но интеграция через MAUI делает её важным звеном в кроссплатформенной стратегии Microsoft. Это позволяет достичь «четырёхплатформенной» поддержки (Windows, Android, iOS, macOS) из одного кода, что особенно ценно для небольших команд.

Storm Application / Hybrid Sample

Эти термины связаны с Apache Storm — распределённой системой реального времени для обработки потоков данных (stream processing). Storm позволяет создавать топологии из спаутов (источников данных) и болтов (обработчиков), которые выполняются параллельно на кластере узлов.

В экосистеме .NET поддержка Storm реализована через HDInsight, где можно разрабатывать топологии на C# с использованием SCP.NET (Stream Computing Platform for .NET). Шаблон «Storm Application» в Visual Studio создаёт проект с базовой структурой спаута и болта, а «Hybrid Sample» демонстрирует смешанную топологию, где часть компонентов написана на Java, а часть — на C#.

Хотя Apache Storm постепенно уступает место более современным фреймворкам (например, Apache Flink или Kafka Streams), он всё ещё используется в legacy-системах, требующих обработки событий с минимальной задержкой: финансовые транзакции, мониторинг сетевого трафика, IoT-аналитика.


Расширения и инструменты разработки

VSIX

VSIX — это формат пакетов расширений для Visual Studio. Шаблон проекта «VSIX» в Visual Studio создаёт приложение, которое добавляет новые функции в саму среду разработки: пользовательские элементы интерфейса, шаблоны кода, анализаторы, отладчики, инструменты рефакторинга и даже полноценные языковые сервисы.

Архитектура расширений основана на Managed Extensibility Framework (MEF) и Visual Studio SDK. Разработчик определяет точки расширения (например, команду в меню, окно инструментов или обработчик событий редактора), а Visual Studio загружает их динамически при запуске. Все расширения упаковываются в файл с расширением .vsix, который можно установить локально или опубликовать в Marketplace.

VSIX-проекты особенно важны для команд, стремящихся стандартизировать процессы разработки: автоматизировать генерацию шаблонов, внедрить внутренние правила кодирования или интегрировать корпоративные API прямо в IDE. Хотя создание расширений требует глубокого понимания архитектуры Visual Studio, оно даёт беспрецедентный контроль над рабочим процессом.

Makefile

Makefile — это текстовый файл, используемый системой сборки make, изначально разработанной для Unix-систем. Он описывает зависимости между файлами и команды, необходимые для преобразования исходного кода в исполняемый результат. Хотя make и Makefile не являются частью экосистемы .NET, они иногда появляются в шаблонах Visual Studio при работе с гибридными проектами.

В контексте .NET Makefile может использоваться для:

  • вызова dotnet build или dotnet publish как части более сложного конвейера;
  • интеграции с нативным кодом (C/C++), собираемым через make;
  • автоматизации задач развёртывания в Linux-средах, где make традиционно используется как стандартный инструмент.

Visual Studio поддерживает Makefile-проекты через компонент “C++ with CMake” или через расширения, что позволяет включать .NET-компоненты в мультиязыковые системы. Это особенно актуально в embedded-разработке или при создании высокопроизводительных модулей, где часть логики реализуется на C++.

CMake

CMake — это кроссплатформенная система управления сборкой, предназначенная для описания процесса компиляции независимо от конкретного компилятора или IDE. Как и Makefile, CMake не является родной технологией для .NET, но его поддержка в Visual Studio делает возможным создание гибридных решений.

В экосистеме .NET CMake чаще всего используется в двух сценариях:

  1. Создание нативных библиотек, которые затем вызываются из .NET через P/Invoke или COM.
  2. Интеграция с проектами на C++/CLI, где управляемый и нативный код сосуществуют в одном модуле.

Файл CMakeLists.txt описывает структуру проекта, зависимости и правила сборки. Visual Studio может импортировать такой файл и предоставить привычный интерфейс отладки и редактирования, скрывая сложность сборки. Это позволяет .NET-разработчикам использовать проверенные нативные библиотеки (например, OpenCV, FFmpeg) без полного перехода на другой стек технологий.

Мастер классических приложений Windows

Этот шаблон в Visual Studio относится к созданию Win32-приложений с использованием C++ и Windows API. Несмотря на название, он не связан напрямую с .NET, так как Win32 — это нативная, неуправляемая модель программирования. Однако Microsoft включает этот шаблон в Visual Studio, чтобы обеспечить поддержку унаследованных систем и сценариев, где требуется максимальный контроль над ресурсами.

Тем не менее, .NET-приложения могут взаимодействовать с Win32 через механизмы P/Invoke (Platform Invocation Services), позволяя вызывать функции из системных DLL (user32.dll, kernel32.dll и др.). В редких случаях разработчики создают гибридные решения: основная логика на C#, а критичные по производительности или системные части — на C++ через Win32.

Наличие этого шаблона в списке подчёркивает универсальность Visual Studio как среды, объединяющей управляемую (.NET) и неуправляемую (Win32, C++) разработку в едином рабочем пространстве.